<?php

class Intensives_Model_DbTable_Auditory extends Zend_Db_Table_Abstract
{

    protected $_name = 'auditory';

    /**
     * Получение списка аудиторий из базы.
     * 
     * @param boolean $withDeleted извлекать также аудитории, которые помечены,
     * как 'удалённая'.
     * @param string $order порядок сортировки (SQL синтаксис).
     * @param int $count количество аудиторий в выборке.
     * @param int $offset смещение в выборке.
     *
     * @return Zend_Db_Table_Rowset_Abstract список аудиторий.
     */
    public function fetchAllAuditories($withDeleted = false, $order = 'name ASC', $count = null, $offset = null)
    {
        if (!$withDeleted)
        {
            $where = 'deleted = 0';
        }

        return $this->fetchAll($where, $order, $count, $offset);
    }

    /**
     * Пометка аудитории, как 'удалённая'.
     * 
     * @param int $auditoryId идентификатор аудитории.
     *
     * @return int если 0, то не помечена, иначе помечена.
     */
    public function deleteAuditory($auditoryId)
    {
        $where = $this->getDefaultAdapter()->quoteInto('id = ?', $auditoryId);

        return $this->update(array('deleted' => '1'), $where);
    }

    /**
     * Определение наличия в базе аудитории с указанным наименованием.
     *
     * @param string $name имя искомой аудитории.
     * @param boolean $withDeleted производить поиск также среди 'удалённых'
     * аудиторий.
     *
     * @return boolean признак наличия аудитории с указанным наименованием в
     * базе.
     */
    public function isExists($name, $withDeleted = false)
    {
        $where = array(
            'name = ?' => $name,
        );

        if (!$withDeleted)
        {
            $where[] = 'deleted = 0';
        }

        $auditoryData = $this->fetchRow($where);
        if(is_null($auditoryData))
        {
            return false;
        }
        else
        {
            $auditoryDataArray = $auditoryData->toArray();
            return $auditoryDataArray['id'];
        }
    }
}
